import yaml
import os


class Config:
    def __init__(self, env='test'):
        """
        初始化配置类，加载对应环境的配置信息。
        :param env: 环境名称，例如 'test' 或 'prod'
        """
        self.env = env
        self.config_data = self.load_config()

    def load_config(self):
        """
        加载配置文件中的数据。
        :return: 当前环境的配置字典
        """
        # config_file_path = '/Applications/Ruangong/PycharmProjects/sgs-interface-automation/config/Config.yml'

        # 获取项目根目录
        base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
        config_file_path = os.path.join(base_dir, 'config', 'Config.yml')

        try:
            with open(config_file_path, 'r') as file:
                config = yaml.safe_load(file)
            return config.get(self.env, {})
        except FileNotFoundError:
            raise FileNotFoundError(f"配置文件未找到: {config_file_path}")
        except yaml.YAMLError as e:
            raise ValueError(f"解析 YAML 文件失败: {e}")

    def get_url_by_type(self, host_type):
        """
        根据 host_type 返回对应的 URL。
        :param host_type: URL 的类型，例如 'hg_url' 或 'zk_url'
        :return: 对应的 URL
        """
        if host_type not in self.config_data:
            raise ValueError(f"未找到指定的 host_type: {host_type}，请检查配置文件")
        return self.config_data[host_type]

    def get_url(self):
        """
        默认返回配置中的 `sgs_url`，也可以改成根据业务需求返回。
        """
        return self.get_url_by_type('sgs_url')

    # 说个事seller登录参数配置
    def get_sgs_url(self):
        return self.get_url_by_type('sgs_url')

    def get_username(self):
        return self.config_data.get('username')

    def get_password(self):
        return self.config_data.get('password')

    # 说个事admin登录参数配置
    def get_admin_username(self):
        return self.config_data.get('admin_username')

    def get_admin_password(self):
        return self.config_data.get('admin_password')

    # 说个事小程序登录参数配置
    def get_v2_url(self):
        return self.get_url_by_type('v2_url')

    def get_mp_username(self):
        return self.config_data.get('mp_username')

    def get_mp_password(self):
        return self.config_data.get('mp_password')


if __name__ == '__main__':
    # 示例用法
    config = Config(env='test')

    # 手动选择 URL 类型
    sgs_url = config.get_url_by_type('sgs_url')
    v2_url = config.get_url_by_type('v2_url')

    # 获取其他配置信息
    username = config.get_username()
    password = config.get_password()
    mp_username = config.get_mp_username()
    mp_password = config.get_mp_password()

    # 打印结果
    print("sgs_url:", sgs_url)
    print("username:", username)
    print("password:", password)
    print("mp_username:", mp_username)
    print("mp_password:", mp_password)
    print("v2_url", v2_url)
